var mensagens;
var intervalo;

$(document).ready(function() {
    
    $('.usuario').text(getUsuario());

    obterMensagens();
    
    $('#enviar').click(function() {
        var request = $.ajax({
            type: "POST",
            url: "http://" + webservice + "/mensagens/mensagem/",
            data: {idMensagem: $('#idMensagem').val(), mensagem: $('#textAreaMensagem').val(), hash: getHash()}
        });
        request.done(function(data) {
            if (data && !data.expirou) {
                obterMensagem($('#idMensagem').val());
            } else {
                mostrarAlerta('erro', 'Sessão Expirada', 'Seu Tempo de acesso expirou!', 'index.html');
            }
        });
        request.fail(function(jqXHR, status, exception) {
            mostrarAlerta('erro', 'Erro no acesso', 'Ocorreu um erro ao acessar o servidor.', 'index.html');
        });
    });
    
    $('#criarConversa').click(function(){
        var request = $.ajax({
            type: "POST",
            url: "http://" + webservice + "/mensagens/",
            data: {mensagem: $('#textAreaMensagem').val(), hash: getHash()}
        });
        request.done(function(data) {
            if (data && !data.expirou) {
                 $('#idMensagem').val(data.value);
                obterMensagem(data.value);
            } else {
                mostrarAlerta('erro', 'Sessão Expirada', 'Seu Tempo de acesso expirou!', 'index.html');
            }
        });
        request.fail(function(jqXHR, status, exception) {
            mostrarAlerta('erro', 'Erro no acesso', 'Ocorreu um erro ao acessar o servidor.', 'index.html');
        });
    });
    
    function obterMensagens() {

        if (!mensagens) {
            var request = $.ajax({
                type: "GET",
                url: "http://"+webservice+"/mensagens/" + getHash(),
                dataType: 'json'
            });
            request.done(function(data) {
                if (data && !data.expirou) {
                    mensagens = data.values;
                    atualizarMensagens();
                } else {
                    mostrarAlerta('erro', 'Sessão Expirada', 'Seu Tempo de acesso expirou!','index.html');
                }
            });
            request.fail(function(jqXHR, status, exception) {
                mostrarAlerta('erro', 'Erro no acesso', 'Ocorreu um erro ao acessar o servidor.','index.html');
            });
        } else {
            atualizarMensagens();
        }
    };

    function atualizarMensagens() {
        var html = '';
        console.log(mensagens);
        for (var i in mensagens) {
            html += '<li data-icon="false"><a href="#" class="mostrarMensagem" id=' + mensagens[i].id + '>' + mensagens[i].titulo+ '</a></li>';
        }

        $('#listMensagens').html(html);
        $('.mostrarMensagem').click(function() {
            var idMensagem = $(this).attr('id');
            $("#idMensagem").val(idMensagem);
            obterMensagem(idMensagem);
            $.mobile.navigate('#mensagem');
        });
        $("#listMensagens").listview('refresh');
    };

    function mostrarMensagem(mensagens) {
        console.log(mensagens.values);
        $('#displayTitulo').html('<h3>' + mensagens.titulo + '</h3>');
        $('#displayMensagem').html('');
        mensagens.values.forEach(function(mensagem) {
            if (mensagem.tipo == 'enviada') {
                var data = new Date(Date.parse(mensagem.dataHora));
                var html = '<div class="bolhaEsquerdo">' + mensagem.conteudo +
                        '<div class="dataHoraBolha">' + data.toLocaleString() + '</div>' +
                        '</div>';
                $('#displayMensagem').append(html);
            } else if (mensagem.tipo == 'resposta') {
                var data = new Date(Date.parse(mensagem.dataHora));
                var html = '<div class="bolhaDireto">' + mensagem.conteudo +
                        '<div class="dataHoraBolha">' + data.toLocaleString() + '</div>' +
                        '</div>';
                $('#displayMensagem').append(html);
            }
        });
    };

    function obterMensagem(idMensagem) {
        var request = $.ajax({
            type: "GET",
            url: "http://"+webservice+"/mensagens/mensagem/" + idMensagem + '/' + getHash(),
            dataType: 'json'
        });
        request.done(function(data) {
            var vazio = $.isEmptyObject(data.values);
        
            if (!vazio && !data.expirou) {
                mostrarMensagem(data);
                if(!intervalo)
                    intervalo = setInterval(function(){ obterMensagem($("#idMensagem").val())},12000);
            } else if(vazio){ 
                //clearInterval(intervalo);
                 mostrarMensagem(data);
                 $.mobile.navigate('#mensagem');
                //mostrarAlerta('erro', 'Erro ao obter Mensagem', 'Não foi possivel obter a mensagem','mensagens.html');
            }else{
                mostrarAlerta('erro', 'Sessão Expirada', 'Seu Tempo de acesso expirou!','index.html');
            }
        });
        request.fail(function(jqXHR, status, exception) {
            clearInterval(intervalo);
            mostrarAlerta('erro', 'Erro no acesso', 'Ocorreu um erro ao acessar o servidor.','index.html');
        });
    };
});